package com.nine.dao;

import java.sql.Timestamp;
import java.util.List;
import org.hibernate.LockMode;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.nine.entity.Customer;

/**
 * A data access object (DAO) providing persistence and search support for
 * Customer entities. Transaction control of the save(), update() and delete()
 * operations can directly support Spring container-managed transactions or they
 * can be augmented to handle user-managed Spring transactions. Each of these
 * methods provides additional information for how to configure it for the
 * desired type of transaction control.
 * 
 * @see com.nine.entity.Customer
 * @author MyEclipse Persistence Tools
 */

public class CustomerDAO extends HibernateDaoSupport {
//	private static final Logger log = LoggerFactory
//			.getLogger(CustomerDAO.class);
	// property constants
	public static final String NAME = "name";
	public static final String PASSWORD = "password";
	public static final String POINT = "point";

	protected void initDao() {
		// do nothing
	}

	public boolean save(Customer transientInstance) {
		//log.debug("saving Customer instance");
		try {
			getHibernateTemplate().save(transientInstance);
			//log.debug("save successful");
			return true;
		} catch (RuntimeException re) {
			//log.error("save failed", re);
			return false;
			//throw re;
		}
	}
	
	public boolean update(Customer customer) {
		try {
			getHibernateTemplate().update(customer);
			return true;
		} catch(RuntimeException re) {
			re.printStackTrace();
			return false;
		}
	}
//
//	public void delete(Customer persistentInstance) {
//		log.debug("deleting Customer instance");
//		try {
//			getHibernateTemplate().delete(persistentInstance);
//			log.debug("delete successful");
//		} catch (RuntimeException re) {
//			log.error("delete failed", re);
//			throw re;
//		}
//	}
//
	public Customer findById(java.lang.String id) {
		
		try {
			Customer instance = (Customer) getHibernateTemplate().get(
					"com.nine.entity.Customer", id);
			return instance;
		} catch (RuntimeException re) {

			throw re;
		}
	}
//
//	public List findByExample(Customer instance) {
//		log.debug("finding Customer instance by example");
//		try {
//			List results = getHibernateTemplate().findByExample(instance);
//			log.debug("find by example successful, result size: "
//					+ results.size());
//			return results;
//		} catch (RuntimeException re) {
//			log.error("find by example failed", re);
//			throw re;
//		}
//	}
//
	public List findByProperty(String propertyName, Object value) {
//		log.debug("finding Customer instance with property: " + propertyName
//				+ ", value: " + value);
		try {
			String queryString = "from Customer as model where model."
					+ propertyName + "= ?";
			return getHibernateTemplate().find(queryString, value);
		} catch (RuntimeException re) {
//			log.error("find by property name failed", re);
			throw re;
		}
	}
//
//	public List findByName(Object name) {
//		return findByProperty(NAME, name);
//	}
//
//	public List findByPassword(Object password) {
//		return findByProperty(PASSWORD, password);
//	}
//
//	public List findByPoint(Object point) {
//		return findByProperty(POINT, point);
//	}
//
//	public List findAll() {
//		log.debug("finding all Customer instances");
//		try {
//			String queryString = "from Customer";
//			return getHibernateTemplate().find(queryString);
//		} catch (RuntimeException re) {
//			log.error("find all failed", re);
//			throw re;
//		}
//	}
//
//	public Customer merge(Customer detachedInstance) {
//		log.debug("merging Customer instance");
//		try {
//			Customer result = (Customer) getHibernateTemplate().merge(
//					detachedInstance);
//			log.debug("merge successful");
//			return result;
//		} catch (RuntimeException re) {
//			log.error("merge failed", re);
//			throw re;
//		}
//	}
//
//	public void attachDirty(Customer instance) {
//		log.debug("attaching dirty Customer instance");
//		try {
//			getHibernateTemplate().saveOrUpdate(instance);
//			log.debug("attach successful");
//		} catch (RuntimeException re) {
//			log.error("attach failed", re);
//			throw re;
//		}
//	}
//
//	public void attachClean(Customer instance) {
//		log.debug("attaching clean Customer instance");
//		try {
//			getHibernateTemplate().lock(instance, LockMode.NONE);
//			log.debug("attach successful");
//		} catch (RuntimeException re) {
//			log.error("attach failed", re);
//			throw re;
//		}
//	}
//
	public static CustomerDAO getFromApplicationContext(ApplicationContext ctx) {
		return (CustomerDAO) ctx.getBean("customerDao");
	}

	
}